// @/utils/request.js（修复版本）
import { ref } from "vue";

const request = (options) => {
  return new Promise((resolve, reject) => {
    // 处理URL拼接，避免双斜杠问题
    let baseUrl = 'http://127.0.0.1:8021';
    let requestUrl = options.url.startsWith('/') 
      ? baseUrl + options.url 
      : baseUrl + '/' + options.url;
    
    uni.request({
      ...options, // 传递所有选项（关键：包含responseType）
      url: requestUrl,
      header: {
        'Authorization': 'Bearer ' + uni.getStorageSync('token'),
        ...options.header
      },
      success: (res) => {
        // 根据HTTP状态码判断请求是否成功
        if (res.statusCode >= 200 && res.statusCode < 300) {
          resolve(res); // 返回完整响应（包含statusCode和data）
        } else {
          // 处理HTTP错误
          reject({
            statusCode: res.statusCode,
            message: res.data?.message || '请求失败',
            data: res.data
          });
        }
      },
      fail: (err) => {
        // 处理网络错误
        reject({
          statusCode: -1,
          message: '网络连接失败',
          error: err
        });
      }
    });
  });
};

// 封装HTTP方法
export const get = (url, config = {}) => 
  request({ url, method: 'GET', ...config }); // 传递所有配置

export const post = (url, data = {}, config = {}) => 
  request({ 
    url, 
    method: 'POST', 
    data, 
    ...config,
    header: {
      ...config.header, // 保留自定义头
      'Content-Type': 'application/json', // 关键：设置JSON格式
      'Authorization': 'Bearer ' + uni.getStorageSync('token'), // 鉴权头（可选）
    }
  });

export const put = (url, data = {}, config = {}) => 
  request({ url, method: 'PUT', data, ...config });

export const del = (url, config = {}) => 
  request({ url, method: 'DELETE', ...config });